大家在學Linux基礎指令的時候,都會學到用來做"複製"的指令為cp,這也是最常使用的指令之一,但是後來會用rsync了以後,就再也不用cp了,原因是因為rsync帶一些參數後可以顯示複製的剩餘時間及大小,而且功能比cp更多,可以用來做備份的指令,在傳輸大量資料的時候,我個人推薦使用rsync取代cp,這樣才可以確保傳輸時的資料完整性。
sudo yum install rsync
sudo apt-get install rsync
# rsync 來源路徑(檔案或資料夾) 目標路徑(檔案或資料夾)
rsync /home/test/ /home/test2/
rsync /home/test/1.txt /home/test2/
rsync /home/test/1.txt /home/test2/1.txt
rsync -avh /home/test/ /home/test2/
此指令會去傳送/home/test資料夾到/home/test2/資料夾,並顯示傳出的檔名、總共大小、傳輸時間等資訊,而且當傳輸成功後,在下一次相同的指令,rsync會去檢查檔案是否有變動,自動跳過沒有變更過內容的檔案,只傳輸有變更的檔案,非常實用的一個指令,大家也可以自己玩玩看。
rsync -avzh --progress /home/test/ /home/test2/
如果在參數後面加上--progress可以顯示目前傳輸的速率,對於傳輸多個檔案時相當好用,而且可以掌握傳到第幾個檔案,還有目前網速如何。
rsync -avh --delete /home/test/ /home/test2/
一般的rsync就是只有複製的功能,他並不會因為來源端今天刪除了某個檔案,就刪除目的端的檔案,因此於參數後面加上--delete時,可以同步來源端與目的端的檔案,同步做新增、刪除及修改。
rsync -avh --remove-source-files /home/test/ /home/test2/
一般的rsync就是只有複製的功能,如果在參數後面加上--remove-source-files就可以讓傳輸後過的檔案於來源端刪除,算是一個相當方便的指令,但是也需要小心使用。
以上是我常用的參數和指令,其實rsync還有很多個參數可以做使用,雖然我記得cp也可以帶參數,但是我覺得rsync優點在於會幫你檢查來源與目的的資料差異,並做差異傳輸,其實如果仔細看上面的指令參數,可以做到備份某個資料夾的功能,如果加入crontab就可以做到定期的備份,其實rsync還可以做到以ssh登入並傳輸檔案,因為我不常用到,所以就沒有多做介紹,有興趣的人可以自己去玩玩看,下面會附上網友更詳細的整理,讓大家做參考。